package msu.ml.gis;

import java.io.*;
import java.util.*;
import msu.ml.data.*;

/**
 * The IShape interface is used to manipulate
 * GIS shapes.
 *
 * @author Reginald M Mead
 * @version 1.0
 */
public interface IShape 
{

	/**
	 *
	 */
   public void addAttribute(DBFAttribute attribute);

	/**
	 * Get the Bounding Box for this shape
	 *
	 * @return the bounding box for this shape
	 */
	public java.awt.geom.Rectangle2D getBoundingBox();

	/**
	 *
	 */
   public ArrayList<DBFAttribute> getAttributes();


	/**
	 * Get the length of this shape record
	 * in 16bit words
	 *
	 * @return length in 16bit words
	 */
	public int getContentLength();


	/**
	 * Get the shape type for this shape
	 *
	 * @return the shape type for this shape
	 */
	public int getShapeType();


	/**
	 * Write this shape to the specified output stream
	 *
	 * @param out output stream to write shape to
	 */
	public void serialize(LittleEndianDataOutputStream out) throws IOException;
}
